1. Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks is distributed across a number of different computer systems and/or a number of different computing environments.
In database environments, users can use tools and algorithms to load data into databases. These tools normally only work on a single table (or at best database) at a time. However, as databases become larger, there is a need to split data across many databases to handle the scale. When data is split, users are forced to perform various manual actions and/or write tenant side code that understands the data distribution. The tenant code can then be executed to import data. However, each time data is split (or subsequently merged), the tenant side code has to be rewritten and compiled to adjust for the new distribution. Thus, adjusting for changed distributions can result in considerable work for a user.
Alternately, it is possible to write code so that data distribution can be changed via configuration. However, it takes a configuration change and downtime to update the system.
In many organizations, responsibilities for importing data and splitting databases can belong to different individuals. For example, a database administrator may be responsible for maintaining an appropriate database distribution based on available resources. On the other hand, an application developer may be responsible for maintaining an application that imports data into a database. Lack of communication between the database administrator and application developer can result in non-functioning applications. For example, if the database administrator fails to communicate a new database distribution from splitting a database, a data import application may stop working. Even when the application developer is made aware of the split, it may take some amount of time for the application developer to modify the data import application for use with the new data distribution.
In other environments, such as, for example, multi-tenant, multi-database environments, a database administrator may have no control over data distribution. For example, cloud database environments can maintain multiple databases per tenant and can service many tenants. In a cloud database environment, modules within the cloud environment can automatically split and/or merge databases as appropriate. Splitting and/or merging databases can be based on a customer's needs, available resources within the cloud environment, needs of other customer's, etc. As such, an application developer may have no way to know a data distribution for corresponding data. Further, in a cloud environment, data distributions can change with some regularity. Thus, when a database is operated in a cloud environment, it can be extremely difficult for an application developer to maintain a data import application.